Signed Query
具体的なフロー
https://cdn-ak.f.st-hatena.com/images/fotolife/Y/YutaUra/20240328/20240328184823.png
1. クライアントをビルドする際に、GraphQL-Codegen などのツールを利用してクライアントアプリで利用しているクエリをまとめ、それぞれの HMAC を計算し、クライアントアプリケーションに埋め込む 2. クライアントは、クエリとそれに対応した HMAC をサーバに送信する
code:json
{
"query": "query Home { ...}", // query is needed for Signed Query
"operationName": "Home",
"variables": {},
"extensions": {
"signedQuery": {
"signature": "xxxxxxxxxx"
}
}
}
3. サーバは、あらかじめ共有されていた 共通鍵 を用いて HMAC を検証することで信頼されたクエリか判断 し、実行する 信頼されていないクエリの場合、エラーを返す
メリット
これにより、クエリの 信頼性 を担保しつつクライアントアプリをいつでもアプリケーションできる状態に warning.icon 共通鍵 の管理は十分注意が必要